In a video processing system with an unified memory architecture, many processes typically share memory resources in order to minimize system cost. Each process has a route or pipeline by which it receives input data from the memory and/or by which it moves or transfers intermediate data through the memory as operations progress between subroutines or blocks designed to complete various tasks. Handshake signals typically manage the flow of data between the blocks.
FIG. 1 (Prior Art) is a block diagram of an exemplary conventional synchronous Ready To Send and Ready To Receive (“RTS/RTR”) handshake scheme 10. In the conventional scheme 10, a first handshake channel 14 couples an upstream block 18 to a downstream block 22. First handshake channel 14 is configured to carry a Ready To Send (“RTS”) handshake signal, which is active to indicate that upstream block 18 is prepared to send at least one word of data over a data bus 26 to downstream block 22. Meanwhile, a second handshake channel 30 further couples upstream block 18 to downstream block 22. Second handshake channel 30 is configured to carry a Ready To Receive (“RTR”) handshake signal, which is active to indicate that downstream block 22 is prepared to accept at least one word of data from upstream block 18 via data bus 26. When a controller (not shown) detects both handshake signals during a clock cycle, a handshake is considered to have occurred. During each clock cycle for which a handshake has occurred, the controller causes one word of data to be transferred from upstream block 18 to downstream block 22 via data bus 26.
Distributing the limited bandwidth of the memory resources amongst the various processes in a unified memory architecture can be a problem. In general, the total system bandwidth (dictated primarily by the type of memory devices) must be greater than or equal to the sum of the bandwidths of all the processes. However, the peak bandwidth of any process (where data is transferred in bursts) must not “starve” any lower priority process (i.e., cause a larger latency between data bursts than the lower priority process can tolerate). In some systems that employ RTS/RTR handshaking, some processes can have high peak bandwidths which fill up the data pipeline and starve other processes.
The present invention is directed to overcoming this problem.